home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 5 / Amiga Tools 5.iso / tools / developer-tools / assembler-tools / apathysource / intromain2.s < prev    next >
Encoding:
Text File  |  1980-02-04  |  26.0 KB  |  1,254 lines

  1.            Machine   68020
  2.  
  3. ;;; "                 Includes"
  4.            Incdir    "!Includes:"
  5.            Include   "StdLibInc.i"
  6.            Include   "StdHardInc.i"
  7.            Include   "Screens.i"
  8.            Include   "Loader.i"
  9.            Include   "Support.i"
  10.  
  11.            Incdir    "!intro:"
  12.            Include   "introMain.i"
  13. ;;;
  14. ;;; "                 Defines"
  15. IntroMain_ID       Equ       42
  16. FadeBuffSize       Equ       8*1024
  17. ;;;
  18.  
  19.            xref      Texture
  20.  
  21.            xref      _InitFade
  22.            xref      _DoFade
  23.  
  24.            xref      _InitSinus
  25.            xref      _InitSinus2
  26.  
  27. ***********************************************************
  28.  
  29.            Section   code,CODE
  30.  
  31. ;;; "                 Init (IconStartup & _InitDemo"
  32. Init:              Bsr       _Startup            ;Iconstartup
  33.  
  34.            Bsr       _InitDemo
  35.            Tst.l     d0
  36.            Bne       Exit
  37.  
  38.            Bsr       _InitSinus
  39. ;;;
  40. ;;; "                 PreCalcing"
  41.            Bsr       Fastest_Init
  42.            Tst.l     d0
  43.            Bne       RunDown
  44.  
  45.            Bsr       DotTunnel_Init
  46.            Tst.l     d0
  47.            Bne       RunDown
  48.  
  49.            Bsr       MiniWall_Init
  50.            Tst.l     d0
  51.            Bne       RunDown
  52. ;;;
  53. ;;; "                 Play Music"
  54.            Bsr       _PlayMusic
  55.            Tst.l     d0
  56.            Bne       Uninit
  57.  
  58.            Move.w    #0,P61_Play
  59. ;;;
  60.  
  61.            Bsr       Intro_Init
  62.            Tst.l     d0
  63.            Bne       RunDown
  64.  
  65.            Bsr       Intro_Main
  66.            Tst.l     d0
  67.            Bne       RunDown
  68.  
  69.            Bsr       Intro_Remove
  70.  
  71.            ;Move.w    #1,P61_Play
  72.  
  73.            ;----------------------------
  74.  
  75. Loop:              Btst      #2,$dff016
  76.            Beq       RunDown
  77.            Cmp.w     #6,P61_Pos
  78.            Bne       Loop
  79.  
  80.            Bsr       Atomic_Init
  81.            Tst.l     d0
  82.            Bne       RunDown
  83.  
  84.            Bsr       Fastest
  85.            Tst.l     d0
  86.            Bne       RunDown
  87.  
  88.            Bsr       Atomic_Main
  89.            Tst.l     d0
  90.            Bne       RunDown
  91.  
  92.            Bsr       MiniWall
  93.            Tst.l     d0
  94.            Bne       RunDown
  95.  
  96.            Bsr       Write2
  97.            Tst.l     d0
  98.            Bne       RunDown
  99.  
  100.            Bsr       DotTunnel
  101.            Tst.l     d0
  102.            Bne       RunDown
  103.  
  104. Loop2:             Btst      #2,$dff016
  105.            Beq       RunDown
  106.            Cmp.w     #20,P61_Pos
  107.            Bne       Loop2
  108.  
  109.            Bsr       Write3
  110.            Tst.l     d0
  111.            Bne       RunDown
  112.  
  113.            ;----------------------------
  114.  
  115. ;;; "                 RunDown"
  116. RunDown:           Bsr       _StopMusic
  117.            Bsr       _FreeAll
  118. Uninit:            Bsr       _UninitDemo
  119. Exit:              Bsr       _Closedown          ;Iconstartup
  120. ;;;
  121.  
  122.            Moveq     #0,d0
  123.            Rts
  124.  
  125. ;;; "Effect: Fastest"
  126.  
  127. Fastest:           Move.l    #256*256,Fastest_Angle2
  128.            Move.l    #1000*256,Fastest_Zoom2
  129.            Move.l    #64*256,Fastest_XOff
  130.            Move.l    #128*256,Fastest_YOff
  131.  
  132.            Bsr       Fastest_Show
  133.  
  134.            Lea       Fastest_Add,a0
  135.            Bsr       _AddVBLInt
  136.            Move.l    d0,Fastest_Int
  137.            Beq       RunDown
  138.  
  139. .lop               Bsr       _Sync
  140.  
  141.            Bsr       Fastest_Main
  142.  
  143.            Cmp.w     #10,P61_Pos
  144.            Beq       .done
  145.  
  146.            Btst      #2,$dff016
  147.            Beq       .break
  148.  
  149.            Tst.l     Fastest_Exit
  150.            Beq       .lop
  151.  
  152. .done              Move.l    Fastest_Int,d0
  153.            Bsr       _RemVBLInt
  154.  
  155.            Bsr       Fastest_Remove
  156.  
  157.            Moveq     #0,d0
  158.            Rts
  159.  
  160. .break             Moveq     #1,d0
  161.            Rts
  162. ;;;
  163. ;;; "Fastest_Add"
  164. Fastest_Add:       Lea       Fastest_Story,a0
  165.            Add.l     Fastest_Curr,a0
  166.  
  167.            Tst.l     Fastest_Time
  168.            Bne       .exit
  169.  
  170. .newentry          Move.b    (a0)+,d0
  171.            Extb.l    d0
  172.            Cmp.l     #-1,d0
  173.            Bne       .noend
  174.            Move.l    #1,Fastest_Exit
  175.            Bra       .exit
  176. .noend             Move.l    d0,Fastest_Time
  177.  
  178.            Move.b    (a0)+,d0
  179.            Extb.l    d0
  180.            Move.l    d0,Fastest_AngleAdd2
  181.  
  182.            Move.b    (a0)+,d0
  183.            Extb.l    d0
  184.            Move.l    d0,Fastest_ZoomAdd2
  185.  
  186.            Move.b    (a0)+,d0
  187.            Extb.l    d0
  188.            Move.l    d0,Fastest_XOffAdd2
  189.  
  190.            Move.b    (a0)+,d0
  191.            Extb.l    d0
  192.            Move.l    d0,Fastest_YOffAdd2
  193.  
  194.            Add.l     #5,Fastest_Curr
  195. .exit              Subq.l    #1,Fastest_Time
  196.  
  197.            ;------------------------------
  198.  
  199.            Move.l    Fastest_AngleAdd,d0
  200.            Add.l     d0,Fastest_Angle2
  201.            Move.l    Fastest_Angle2,d0
  202.            Asr.l     #8,d0
  203.            Move.l    d0,Fastest_Angle
  204.            And.l     #1023,Fastest_Angle
  205.  
  206.            Move.l    Fastest_AngleAdd2,d0
  207.            Add.l     d0,Fastest_AngleAdd
  208.  
  209.  
  210.            Move.l    Fastest_ZoomAdd,d0
  211.            Add.l     d0,Fastest_Zoom2
  212.            Move.l    Fastest_Zoom2,d0
  213.            Asr.l     #8,d0
  214.            Move.w    d0,Fastest_Zoom
  215.  
  216.            Move.l    Fastest_ZoomAdd2,d0
  217.            Add.l     d0,Fastest_ZoomAdd
  218.  
  219.  
  220.            Move.l    Fastest_XOffAdd,d0
  221.            Add.l     d0,Fastest_XOff
  222.  
  223.            Move.l    Fastest_XOffAdd2,d0
  224.            Add.l     d0,Fastest_XOffAdd
  225.  
  226.  
  227.            Move.l    Fastest_YOffAdd,d0
  228.            Add.l     d0,Fastest_YOff
  229.  
  230.            Move.l    Fastest_YOffAdd2,d0
  231.            Add.l     d0,Fastest_YOffAdd
  232.  
  233.            Rts
  234. ;;;
  235. ;;; "Fastest Story"
  236. Fastest_Story:
  237.            Dc.b      100,1,-3,0,0
  238.            Dc.b      100,1,-3,0,0
  239.            Dc.b      100,1,0,2,0
  240.            Dc.b      100,0,3,3,0
  241.            Dc.b      100,0,3,4,0
  242.            Dc.b      100,0,0,4,0
  243.            Dc.b      100,0,0,5,1
  244.            Dc.b      70,0,3,5,1
  245.            Dc.b      100,20,0,10,10
  246.            Dc.b      100,-5,6,-10,10
  247.            Dc.b      100,-5,6,-10,10
  248.            Dc.b      100,-5,-45,-5,-5
  249.            Dc.b      100,-10,65,0,0
  250.            Dc.b      70,-30,-55,0,0
  251.            Dc.b      75,20,65,0,0
  252.            Dc.b      70,-10,-45,0,0
  253.            Dc.b      75,-50,25,0,0
  254.            Dc.b      -1
  255.            Even
  256. ;;;;
  257. ;;; "Fastest Vars"
  258. Fastest_Exit:      Dc.l      0
  259. Fastest_Curr:      Dc.l      0
  260. Fastest_Time:      Dc.l      0
  261.  
  262. Fastest_AngleAdd:  Dc.l      16
  263. Fastest_AngleAdd2: Dc.l      0
  264. Fastest_Angle2:    Dc.l      0
  265.  
  266. Fastest_ZoomAdd:   Dc.l      0
  267. Fastest_ZoomAdd2:  Dc.l      0
  268. Fastest_Zoom2:     Dc.l      0
  269.  
  270. Fastest_XOffAdd:   Dc.l      0
  271. Fastest_XOffAdd2:  Dc.l      0
  272.  
  273. Fastest_YOffAdd:   Dc.l      0
  274. Fastest_YOffAdd2:  Dc.l      0
  275.  
  276. Fastest_Int:       Dc.l      0
  277. ;;;
  278.  
  279. ;;; "Effect: DotTunnel"
  280. DotTunnel:         Move.w    #4,DotTunnel_Speed
  281.            Move.l    #0*256,DotTunnel_XS2
  282.            Move.l    #0*256,DotTunnel_YS2
  283.  
  284.            Bsr       DotTunnel_Show
  285.  
  286. .lop               Bsr       _Sync
  287.  
  288.            Btst      #2,$dff016
  289.            Beq       .break
  290.  
  291.            Bsr       DotTunnel_Add
  292.            Bsr       DotTunnel_Counter
  293.            Bsr       DotTunnel_Main
  294.  
  295.            Cmp.w     #20,P61_Pos
  296.            Beq       .done
  297.  
  298.            Tst.l     DotTunnel_Exit
  299.            Beq       .lop
  300.  
  301. .done              Bsr       DotTunnel_Remove
  302.  
  303.            Moveq     #0,d0
  304.            Rts
  305.  
  306. .break             Moveq     #1,d0
  307.            Rts
  308. ;;;
  309. ;;; "DotTunnel_Add"
  310. DotTunnel_Add:     Lea       DotTunnel_Story,a0
  311.            Add.l     DotTunnel_Curr,a0
  312.  
  313.            Tst.l     DotTunnel_Time
  314.            Bne       .exit
  315.  
  316. .newentry          Move.b    (a0)+,d0
  317.            Extb.l    d0
  318.            Cmp.l     #-1,d0
  319.            Bne       .noend
  320.            Move.l    #1,DotTunnel_Exit
  321.            Bra       .exit
  322.  
  323. .noend             Ext.w     d0
  324.            Move.w    d0,DotTunnel_Speed
  325.  
  326.            Move.l    #16,DotTunnel_Time
  327.  
  328.            Move.b    (a0)+,d0
  329.            Extb.l    d0
  330.            Move.l    d0,DotTunnel_XS2
  331.  
  332.            Move.b    (a0)+,d0
  333.            Extb.l    d0
  334.            Move.l    d0,DotTunnel_YS2
  335.  
  336.            Add.l     #3,DotTunnel_Curr
  337.  
  338.            ;-----------------------------
  339.  
  340. .exit              Move.w    DotTunnel_Old,d0
  341.            Move.w    P61_CRow,d1
  342.            Cmp.w     d0,d1
  343.            Beq       .donesync
  344.            Subq.l    #1,DotTunnel_Time
  345. .donesync          Move.w    d1,DotTunnel_Old
  346.  
  347.            ;------------------------------
  348.  
  349.            Move.l    DotTunnel_XSAdd,d0
  350.            Add.l     d0,DotTunnel_XS2
  351.            Move.l    DotTunnel_XS2,d0
  352.            ;Asr.l     #8,d0
  353.            Move.w    d0,DotTunnel_XS
  354.  
  355.            Move.l    DotTunnel_XSAdd2,d0
  356.            Add.l     d0,DotTunnel_XSAdd
  357.  
  358.  
  359.            Move.l    DotTunnel_YSAdd,d0
  360.            Add.l     d0,DotTunnel_YS2
  361.            Move.l    DotTunnel_YS2,d0
  362.            ;Asr.l     #8,d0
  363.            Move.w    d0,DotTunnel_YS
  364.  
  365.            Move.l    DotTunnel_YSAdd2,d0
  366.            Add.l     d0,DotTunnel_YSAdd
  367.  
  368.            Rts
  369. ;;;
  370. ;;; "DotTunnel Story"
  371. DotTunnel_Story:   Dc.b      4,37,3
  372.            Dc.b      4,21,37
  373.            Dc.b      4,13,36
  374.            Dc.b      4,24,5
  375.            Dc.b      4,17,26
  376.            Dc.b      4,13,26
  377.            Dc.b      4,24,10
  378.            Dc.b      4,17,26
  379.            Dc.b      4,23,36
  380.            Dc.b      4,34,30
  381.            Dc.b      4,27,16
  382.            Dc.b      4,27,16
  383.            Dc.b      4,34,10
  384.            Dc.b      4,17,6
  385.            Dc.b      4,13,26
  386.            Dc.b      4,24,34
  387.            Dc.b      4,27,16
  388.            Dc.b      4,27,36
  389.            Dc.b      4,14,20
  390.            Dc.b      4,27,16
  391.            Dc.b      4,20,26
  392.            Dc.b      4,34,35
  393.            Dc.b      4,16,16
  394.            Dc.b      4,33,36
  395.  
  396.            Dc.b      -1
  397.            Even
  398. ;;;;
  399. ;;; "DotTunnel Vars"
  400. DotTunnel_Fade:    Dc.l      0
  401. DotTunnel_Done:    Dc.l      0
  402.  
  403. DotTunnel_Exit:    Dc.l      0
  404. DotTunnel_Curr:    Dc.l      0
  405. DotTunnel_Time:    Dc.l      0
  406.  
  407. DotTunnel_XSAdd:   Dc.l      0
  408. DotTunnel_XSAdd2:  Dc.l      0
  409. DotTunnel_XS2:     Dc.l      0
  410.  
  411. DotTunnel_YSAdd:   Dc.l      0
  412. DotTunnel_YSAdd2:  Dc.l      0
  413. DotTunnel_YS2:     Dc.l      0
  414.  
  415. DotTunnel_Old:     Dc.w      0
  416. ;;;
  417.  
  418. ;;; "Effect: MiniWall"
  419.  
  420. MiniWall:          Move.l    #2*256,MiniWall_CoAdd
  421.            Move.l    #3*256,MiniWall_Co2Add
  422.            Move.l    #5*256,MiniWall_Co3Add
  423.  
  424.            Bsr       MiniWall_Show
  425.  
  426. .lop               Bsr       _Sync
  427.  
  428.            Btst      #2,$dff016
  429.            Beq       .break
  430.  
  431.            Bsr       MiniWall_Add
  432.            Bsr       MiniWall_Counter
  433.            Bsr       MiniWall_Main
  434.  
  435.            Cmp.w     #14,P61_Pos
  436.            Beq       .done
  437.  
  438.            Tst.l     MiniWall_Exit
  439.            Beq       .lop
  440.  
  441. .done              Bsr       MiniWall_Remove
  442.            Moveq     #0,d0
  443.            Rts
  444.  
  445. .break             Bsr       MiniWall_Remove
  446.            Moveq     #1,d0
  447.            Rts
  448.  
  449. ;;;
  450. ;;; "MiniWall_Add"
  451. MiniWall_Add:      Lea       MiniWall_Story,a0
  452.            Add.l     MiniWall_Curr,a0
  453.  
  454.            Tst.l     MiniWall_Time
  455.            Bne       .exit
  456.  
  457. .newentry          Move.b    (a0)+,d0
  458.            Extb.l    d0
  459.            Cmp.l     #-1,d0
  460.            Bne       .noend
  461.            Move.l    #1,MiniWall_Exit
  462.            Bra       .exit
  463. .noend             Move.l    d0,MiniWall_Time
  464.  
  465.            Move.b    (a0)+,d0
  466.            Extb.l    d0
  467.            Move.l    d0,MiniWall_CoAdd2
  468.  
  469.            Move.b    (a0)+,d0
  470.            Extb.l    d0
  471.            Move.l    d0,MiniWall_Co2Add2
  472.  
  473.            Move.b    (a0)+,d0
  474.            Extb.l    d0
  475.            Move.l    d0,MiniWall_Co3Add2
  476.  
  477.            Add.l     #4,MiniWall_Curr
  478. .exit              Subq.l    #1,MiniWall_Time
  479.  
  480.            ;------------------------------
  481.  
  482.            Move.l    MiniWall_CoAdd,d0
  483.            Add.l     d0,MiniWall_Co_2
  484.            Move.l    MiniWall_Co_2,d0
  485.            Asr.l     #8,d0
  486.            Move.l    d0,MiniWall_Co
  487.            And.l     #1023,MiniWall_Co
  488.  
  489.            Move.l    MiniWall_CoAdd2,d0
  490.            Add.l     d0,MiniWall_CoAdd
  491.  
  492.  
  493.            Move.l    MiniWall_Co2Add,d0
  494.            Add.l     d0,MiniWall_Co2_2
  495.            Move.l    MiniWall_Co2_2,d0
  496.            Asr.l     #8,d0
  497.            Move.l    d0,MiniWall_Co2
  498.            And.l     #1023,MiniWall_Co2
  499.  
  500.            Move.l    MiniWall_Co2Add2,d0
  501.            Add.l     d0,MiniWall_Co2Add
  502.  
  503.  
  504.            Move.l    MiniWall_Co3Add,d0
  505.            Add.l     d0,MiniWall_Co3_2
  506.            Move.l    MiniWall_Co3_2,d0
  507.            Asr.l     #8,d0
  508.            Move.l    d0,MiniWall_Co3
  509.            And.l     #1023,MiniWall_Co3
  510.  
  511.            Move.l    MiniWall_Co3Add2,d0
  512.            Add.l     d0,MiniWall_Co3Add
  513.  
  514.            Rts
  515. ;;;
  516. ;;; "MiniWall Story"
  517. MiniWall_Story:
  518.            Dc.b      64,0,0,4
  519.            Dc.b      64,0,-4,0
  520.            Dc.b      64,0,0,0
  521.            Dc.b      64,-8,0,0
  522.            Dc.b      64,0,8,2
  523.            Dc.b      64,2,0,2
  524.            Dc.b      64,0,-8,0
  525.            Dc.b      64,-4,0,8
  526.            Dc.b      64,0,0,2
  527.            Dc.b      64,8,-8,0
  528.            Dc.b      64,0,0,-4
  529.            Dc.b      64,-16,0,2
  530.            Dc.b      64,0,-8,0
  531.            Dc.b      64,0,0,-4
  532.            Dc.b      64,0,8,2
  533.            Dc.b      64,2,0,2
  534.            Dc.b      48,0,-4,0
  535.            Dc.b      32,-4,0,8
  536.            Dc.b      32,0,0,2
  537.            Dc.b      32,16,-8,0
  538.            ;Dc.b      32,0,0,-4
  539.  
  540.            Dc.b      -1
  541.            Even
  542. ;;;;
  543. ;;; "MiniWall Vars"
  544. MiniWall_Exit:     Dc.l      0
  545. MiniWall_Curr:     Dc.l      0
  546. MiniWall_Time:     Dc.l      0
  547.  
  548. MiniWall_CoAdd:    Dc.l      0
  549. MiniWall_CoAdd2:   Dc.l      0
  550. MiniWall_Co_2:     Dc.l      0
  551.  
  552. MiniWall_Co2Add:   Dc.l      0
  553. MiniWall_Co2Add2:  Dc.l      0
  554. MiniWall_Co2_2:    Dc.l      0
  555.  
  556. MiniWall_Co3Add:   Dc.l      0
  557. MiniWall_Co3Add2:  Dc.l      0
  558. MiniWall_Co3_2:    Dc.l      0
  559. ;;;
  560.  
  561. *********************************************************
  562.  
  563. Atomic_Init:
  564. ;;; "Open Screen"
  565. A_AllocPic:
  566.            Move.l    #40*256*4,d0
  567.            Move.l    #IntroMain_ID,d1
  568.            Bsr       _AllocChip
  569.            Move.l    d0,A_PicPtr
  570.            Beq       A_InitError
  571.  
  572.            Move.l    #40*256*2,d0
  573.            Move.l    #IntroMain_ID,d1
  574.            Bsr       _AllocChip
  575.            Move.l    d0,A_ScreenPtr
  576.            Beq       A_InitError
  577.  
  578.            ;------------------------
  579.  
  580.            Lea       A_BplPtr,a0
  581.            Move.l    A_ScreenPtr,d1
  582.            Moveq     #2-1,d2
  583.            Move.l    #40*256,d0
  584.            Bsr       _SetPtrs
  585.  
  586.            Lea       A_BplPtr,a0
  587.            Lea       16(a0),a0
  588.            Move.l    A_PicPtr,d1
  589.            Moveq     #4-1,d2
  590.            Move.l    #40*256,d0
  591.            Bsr       _SetPtrs
  592.  
  593.            Lea       A_SprPtr,a0
  594.            Move.l    #SpriteDummy,d1
  595.            Moveq     #7,d2
  596.            Moveq     #0,d0
  597.            Bsr       _SetPtrs
  598. ;;;
  599. ;;; "Alloc FadeBuffer"
  600.            Move.l    #8*1024,d0
  601.            Move.l    #IntroMain_ID,d1
  602.            Bsr       _AllocPublic
  603.            Move.l    d0,A_FadeBuffPtr
  604.            Beq       A_InitError
  605. ;;;
  606. ;;; "Init Pic"
  607.  
  608. A_InitPic:         Lea       Texture,a3
  609.            Move.l    A_PicPtr,a0
  610.            Add.l     #4,a0
  611.            Move.l    #%10000,d5
  612.            Move.l    #4,a4
  613.  
  614.            Move.l    #4-1,d4
  615. .plane
  616.            Move.l    a3,a2
  617.  
  618.            Move.l    #128-1,d7
  619. .ylop
  620.            Move.l    a2,a1
  621.            Addq.l    #1,a2
  622.  
  623.            Move.l    #32-1,d6
  624. .xlop              Moveq     #0,d0
  625.  
  626.            Movem.l   d6,-(a7)
  627.            Move.l    a4,d6
  628.  
  629.            Move.b    (a1),d0
  630.            Add.l     #256/2,a1
  631.            And.w     d5,d0
  632.            Lsr.l     d6,d0
  633.            Move.b    (a1),d1
  634.            Add.l     #256/2,a1
  635.            And.w     d5,d1
  636.            Lsr.l     d6,d1
  637.            Move.b    (a1),d2
  638.            Add.l     #256/2,a1
  639.            And.w     d5,d2
  640.            Lsr.l     d6,d2
  641.            Move.b    (a1),d3
  642.            Add.l     #256/2,a1
  643.            And.w     d5,d3
  644.            Lsr.l     d6,d3
  645.  
  646.            Lsl.l     #2,d0
  647.            Or.b      d1,d0
  648.            Lsl.l     #2,d0
  649.            Or.b      d2,d0
  650.            Lsl.l     #2,d0
  651.            Or.b      d3,d0
  652.  
  653.            Move.b    d0,d1
  654.            Lsl.l     #1,d1
  655.            Or.b      d1,d0
  656.  
  657.            Move.b    d0,(a0)+
  658.  
  659.            Movem.l   (a7)+,d6
  660.  
  661.            Dbra      d6,.xlop
  662.  
  663.            Add.l     #8+40,a0
  664.  
  665.            Dbra      d7,.ylop
  666.  
  667.            Lsl.l     #1,d5
  668.            Add.l     #1,a4
  669.  
  670.            Dbra      d4,.plane
  671. ;;;
  672. ;;; "Rts"
  673.            Moveq     #0,d0
  674.            Rts
  675. A_InitError:
  676.            Move.l    #IntroMain_ID,d0
  677.            Bsr       _FreeMany
  678.            Moveq     #1,d0
  679.            Rts
  680. ;;;
  681.  
  682. Atomic_Main:
  683. ;;; "Install Screen"
  684.            Move.l    #64,d0
  685.            Move.l    #64,d1
  686.            Move.l    #0,d2
  687.            Move.l    #0,d3
  688.            Lea       A_Pal2,a0
  689.            Lea       A_Pal1,a1
  690.            Move.l    A_FadeBuffPtr,a2
  691.            Bsr       _InitFade
  692. ;;;
  693. ;;; "Fade Pic"
  694.            Bsr       _Sync
  695.  
  696.            Lea       A_CList,a0
  697.            Bsr       _InstallCopper
  698.  
  699. .fade              Move.l    A_FadeBuffPtr,a0
  700.            Bsr       _DoFade
  701.            Bsr       _Sync
  702.  
  703.            Btst      #2,$dff016
  704.            Beq       A_Break
  705.  
  706.            Tst.l     d0
  707.            Beq       .fade
  708. ;;;
  709. ;;; "It is.."
  710. A_XPos1            Equ       38
  711. A_YPos1            Equ       17
  712.  
  713. A_XPos2            Equ       85
  714. A_YPos2            Equ       207
  715.  
  716. A_First:           Move.l    #64,d0
  717.            Move.l    #8,d1
  718.            Move.l    #0,d2
  719.            Move.l    #0,d3
  720.            Lea       A_Pal2,a0
  721.            Lea       A_Pal1,a1
  722.            Move.l    A_FadeBuffPtr,a2
  723.            Bsr       _InitFade
  724.  
  725.            Move.w    #32,d0
  726.            Bsr       P61_WaitCRow
  727.            Tst.l     d0
  728.            Bne       A_Break
  729.  
  730.            Lea       A_Word1a,a0
  731.            Move.l    #A_XPos1,d0
  732.            Move.l    #A_YPos1,d1
  733.            Bsr       Wr1_Write
  734.  
  735.            Lea       A_Word1b,a0
  736.            Move.l    #A_XPos1+35,d0
  737.            Move.l    #A_YPos1,d1
  738.            Bsr       Wr1_Write
  739.  
  740.            Lea       A_Word1c,a0
  741.            Move.l    #A_XPos1+70,d0
  742.            Move.l    #A_YPos1,d1
  743.            Bsr       Wr1_Write
  744.  
  745.            Lea       A_Word1d,a0
  746.            Move.l    #A_XPos1+148,d0
  747.            Move.l    #A_YPos1,d1
  748.            Bsr       Wr1_Write
  749.  
  750. .fade              Move.l    A_FadeBuffPtr,a0
  751.            Bsr       _DoFade
  752.            Bsr       _Sync
  753.  
  754.            Btst      #2,$dff016
  755.            Beq       A_Break
  756.  
  757.            Tst.l     d0
  758.            Beq       .fade
  759.  
  760.            ;-------------------------
  761. A_Second:
  762.            Move.l    #64,d0
  763.            Move.l    #8,d1
  764.            Move.l    #0,d2
  765.            Move.l    #0,d3
  766.            Lea       A_Pal2,a0
  767.            Lea       A_Pal1,a1
  768.            Move.l    A_FadeBuffPtr,a2
  769.            Bsr       _InitFade
  770.  
  771.            Move.w    #0,d0
  772.            Bsr       P61_WaitCRow2
  773.            Tst.l     d0
  774.            Bne       A_Break
  775.  
  776.            Lea       A_Word2a,a0
  777.            Move.l    #A_XPos2,d0
  778.            Move.l    #A_YPos2,d1
  779.            Bsr       Wr1_Write
  780.  
  781.            Lea       A_Word2b,a0
  782.            Move.l    #A_XPos2+61,d0
  783.            Move.l    #A_YPos2,d1
  784.            Bsr       Wr1_Write
  785.  
  786. .fade              Move.l    A_FadeBuffPtr,a0
  787.            Bsr       _DoFade
  788.            Bsr       _Sync
  789.  
  790.            Btst      #2,$dff016
  791.            Beq       A_Break
  792.  
  793.            Tst.l     d0
  794.            Beq       .fade
  795. ;;;
  796. ;;; "Fade Up"
  797. A_FadeUp:          Move.l    #64,d0
  798.            Move.l    #8,d1
  799.            Move.l    #0,d2
  800.            Move.l    #0,d3
  801.            Lea       A_Pal1,a0
  802.            Lea       A_Pal2,a1
  803.            Move.l    A_FadeBuffPtr,a2
  804.            Bsr       _InitFade
  805.  
  806.            Move.w    #32,d0
  807.            Bsr       P61_WaitCRow
  808.            Tst.l     d0
  809.            Bne       A_Break
  810.  
  811.            Move.w    #0,d0
  812.            Bsr       P61_WaitCRow2
  813.            Tst.l     d0
  814.            Bne       A_Break
  815.  
  816. .fade              Move.l    A_FadeBuffPtr,a0
  817.            Bsr       _DoFade
  818.            Bsr       _Sync
  819.  
  820.            Btst      #2,$dff016
  821.            Beq       A_Break
  822.  
  823.            Tst.l     d0
  824.            Beq       .fade
  825. ;;;
  826.            Moveq     #0,d0
  827.            Rts
  828. A_Break:
  829.            Moveq     #1,d0
  830.            Rts
  831.  
  832. ;;; "Atomic Data"
  833. A_PicPtr:          Dc.l      0
  834. A_ScreenPtr:       Dc.l      0
  835. A_FadeBuffPtr:     Dc.l      0
  836.  
  837. A_Pal1:            Dc.l      $000000,$777777,$bbbbbb,$ffffff
  838.            Dc.l      $000011,$777777,$bbbbbb,$ffffff
  839.            Dc.l      $000022,$777777,$bbbbbb,$ffffff
  840.            Dc.l      $111133,$777777,$bbbbbb,$ffffff
  841.  
  842.            Dc.l      $222244,$777777,$bbbbbb,$ffffff
  843.            Dc.l      $333355,$777777,$bbbbbb,$ffffff
  844.            Dc.l      $444466,$777777,$bbbbbb,$ffffff
  845.            Dc.l      $555577,$777777,$bbbbbb,$ffffff
  846.  
  847.            Dc.l      $666688,$777777,$bbbbbb,$ffffff
  848.            Dc.l      $777799,$777777,$bbbbbb,$ffffff
  849.            Dc.l      $8888aa,$777777,$bbbbbb,$ffffff
  850.            Dc.l      $9999bb,$777777,$bbbbbb,$ffffff
  851.  
  852.            Dc.l      $aaaacc,$777777,$bbbbbb,$ffffff
  853.            Dc.l      $bbbbdd,$777777,$bbbbbb,$ffffff
  854.            Dc.l      $ccccee,$777777,$bbbbbb,$ffffff
  855.            Dc.l      $ddddff,$777777,$bbbbbb,$ffffff
  856.  
  857. A_Pal2:
  858.            REPT      16
  859.            Dc.l      $ffffff,$ffffff,$ffffff,$ffffff
  860.            ENDR
  861.  
  862. A_Pal3:
  863.            REPT      16
  864.            Dc.l      0,0,0,0
  865.            ENDR
  866.  
  867. A_Word1a:          Dc.b      I,T,END
  868. A_Word1b:          Dc.b      I,S,END
  869. A_Word1c:          Dc.b      Y,O,U,R,END
  870. A_Word1d:          Dc.b      F,U,T,U,R,E,END
  871.  
  872. A_Word2a:          Dc.b      Y,O,U,END
  873. A_Word2b:          Dc.b      D,E,C,I,D,E,UTR,END
  874. ;;;
  875. ;;; "Wr1_Write"
  876. ********************************
  877. * IN: a0 - Pekare till ordet   *
  878. *     d0 - X pos               *
  879. *     d1 - Y pos               *
  880. ********************************
  881. Wr1_Write:         Movem.l   d0-d4/a0,-(a7)
  882.  
  883.            Move.l    a0,a1
  884.            Move.l    A_ScreenPtr,a0
  885.            Move.l    d1,d2
  886.            Move.l    d0,d1
  887.            Move.l    #320,d3
  888.            Move.l    #256,d4
  889.            Bsr       Writer_PutW
  890.  
  891.            Movem.l   (a7)+,d0-d4/a0
  892.            Rts
  893. ;;;
  894.  
  895. *********************************************************
  896.  
  897.  
  898. Write2:
  899. ;;; "Install Screen"
  900.            Move.l    A_PicPtr,a0
  901.            Move.l    #40*256*4/16-1,d0
  902. .clrlop1           Clr.l     (a0)+
  903.            Clr.l     (a0)+
  904.            Clr.l     (a0)+
  905.            Clr.l     (a0)+
  906.            Dbra      d0,.clrlop1
  907.  
  908.            Move.l    A_ScreenPtr,a0
  909.            Move.l    #40*256*2/16-1,d0
  910. .clrlop2           Clr.l     (a0)+
  911.            Clr.l     (a0)+
  912.            Clr.l     (a0)+
  913.            Clr.l     (a0)+
  914.            Dbra      d0,.clrlop2
  915.  
  916.            Move.l    #64,d0
  917.            Move.l    #64,d1
  918.            Move.l    #0,d2
  919.            Move.l    #0,d3
  920.            Lea       A_Pal2,a0
  921.            Lea       A_Pal1,a1
  922.            Move.l    A_FadeBuffPtr,a2
  923.            Bsr       _InitFade
  924. ;;;
  925. ;;; "Fade Pic"
  926.            Bsr       _Sync
  927.  
  928.            Lea       A_CList,a0
  929.            Bsr       _InstallCopper
  930.  
  931. .fade              Btst      #2,$dff016
  932.            Beq       W2_Break
  933.  
  934.            Move.l    A_FadeBuffPtr,a0
  935.            Bsr       _DoFade
  936.            Bsr       _Sync
  937.            Tst.l     d0
  938.            Beq       .fade
  939. ;;;
  940. ;;; "God is.."
  941. A_XPos1_           Equ       73
  942. A_YPos1_           Equ       47
  943.  
  944. A_XPos2_           Equ       50
  945. A_YPos2_           Equ       177
  946.  
  947. A_First2:          Move.l    #64,d0
  948.            Move.l    #8,d1
  949.            Move.l    #0,d2
  950.            Move.l    #0,d3
  951.            Lea       A_Pal2,a0
  952.            Lea       A_Pal1,a1
  953.            Move.l    A_FadeBuffPtr,a2
  954.            Bsr       _InitFade
  955.  
  956.            Move.w    #32,d0
  957.            Bsr       P61_WaitCRow
  958.            Tst.l     d0
  959.            Bne       W2_Break
  960.  
  961.            Lea       W_Word1a,a0
  962.            Move.l    #A_XPos1_,d0
  963.            Move.l    #A_YPos1_,d1
  964.            Bsr       Wr1_Write
  965.  
  966.            Lea       W_Word1b,a0
  967.            Move.l    #A_XPos1_+62,d0
  968.            Move.l    #A_YPos1_,d1
  969.            Bsr       Wr1_Write
  970.  
  971.            Lea       W_Word1c,a0
  972.            Move.l    #A_XPos1_+98,d0
  973.            Move.l    #A_YPos1_,d1
  974.            Bsr       Wr1_Write
  975.  
  976. .fade              Btst      #2,$dff016
  977.            Beq       W2_Break
  978.  
  979.            Move.l    A_FadeBuffPtr,a0
  980.            Bsr       _DoFade
  981.            Bsr       _Sync
  982.            Tst.l     d0
  983.            Beq       .fade
  984.  
  985.            ;-------------------------
  986. A_Second2:
  987.            Move.l    #64,d0
  988.            Move.l    #8,d1
  989.            Move.l    #0,d2
  990.            Move.l    #0,d3
  991.            Lea       A_Pal2,a0
  992.            Lea       A_Pal1,a1
  993.            Move.l    A_FadeBuffPtr,a2
  994.            Bsr       _InitFade
  995.  
  996.            Move.w    #0,d0
  997.            Bsr       P61_WaitCRow2
  998.            Tst.l     d0
  999.            Bne       W2_Break
  1000.  
  1001.            Lea       W_Word2a,a0
  1002.            Move.l    #A_XPos2_,d0
  1003.            Move.l    #A_YPos2_,d1
  1004.            Bsr       Wr1_Write
  1005.  
  1006.            Lea       W_Word2b,a0
  1007.            Move.l    #A_XPos2_+65,d0
  1008.            Move.l    #A_YPos2_,d1
  1009.            Bsr       Wr1_Write
  1010.  
  1011.            Lea       W_Word2c,a0
  1012.            Move.l    #A_XPos2_+154,d0
  1013.            Move.l    #A_YPos2_,d1
  1014.            Bsr       Wr1_Write
  1015.  
  1016. .fade              Btst      #2,$dff016
  1017.            Beq       W2_Break
  1018.  
  1019.            Move.l    A_FadeBuffPtr,a0
  1020.            Bsr       _DoFade
  1021.            Bsr       _Sync
  1022.            Tst.l     d0
  1023.            Beq       .fade
  1024. ;;;
  1025. ;;; "Fade Up"
  1026. A_FadeUp2:         Move.l    #64,d0
  1027.            Move.l    #8,d1
  1028.            Move.l    #0,d2
  1029.            Move.l    #0,d3
  1030.            Lea       A_Pal1,a0
  1031.            Lea       A_Pal2,a1
  1032.            Move.l    A_FadeBuffPtr,a2
  1033.            Bsr       _InitFade
  1034.  
  1035.            Move.w    #32,d0
  1036.            Bsr       P61_WaitCRow
  1037.            Tst.l     d0
  1038.            Bne       W2_Break
  1039.  
  1040.            Move.w    #0,d0
  1041.            Bsr       P61_WaitCRow2
  1042.            Tst.l     d0
  1043.            Bne       W2_Break
  1044.  
  1045. .fade              Btst      #2,$dff016
  1046.            Beq       W2_Break
  1047.  
  1048.            Move.l    A_FadeBuffPtr,a0
  1049.            Bsr       _DoFade
  1050.            Bsr       _Sync
  1051.            Tst.l     d0
  1052.            Beq       .fade
  1053. ;;;
  1054.            Moveq     #0,d0
  1055.            Rts
  1056.  
  1057. W2_Break:          Moveq     #1,d0
  1058.            Rts
  1059.  
  1060. ;;; "Write2 Data"
  1061. W_Word1a:          Dc.b      G,O,D,END
  1062. W_Word1b:          Dc.b      I,S,END
  1063. W_Word1c:          Dc.b      D,E,A,D,UTR,END
  1064.  
  1065. W_Word2a:          Dc.b      H,O,W,END
  1066. W_Word2b:          Dc.b      A,B,O,U,T,END
  1067. W_Word2c:          Dc.b      Y,O,U,FRA,END
  1068. ;;;
  1069.  
  1070. Write3:
  1071. ;;; "Clear Screen"
  1072.            Move.l    A_PicPtr,a0
  1073.            Move.l    #40*256*4/16-1,d0
  1074. .clrlop1           Clr.l     (a0)+
  1075.            Clr.l     (a0)+
  1076.            Clr.l     (a0)+
  1077.            Clr.l     (a0)+
  1078.            Dbra      d0,.clrlop1
  1079.  
  1080.            Move.l    A_ScreenPtr,a0
  1081.            Move.l    #40*256*2/16-1,d0
  1082. .clrlop2           Clr.l     (a0)+
  1083.            Clr.l     (a0)+
  1084.            Clr.l     (a0)+
  1085.            Clr.l     (a0)+
  1086.            Dbra      d0,.clrlop2
  1087. ;;;
  1088. ;;; "Init Colours"
  1089.            Lea       Custom,a5
  1090.            Move.w    #$0000,$106(a5)
  1091.            Move.w    #$0000,$180(a5)
  1092.            Move.w    #$0777,$182(a5)
  1093.            Move.w    #$0bbb,$184(a5)
  1094.            Move.w    #$0fff,$186(a5)
  1095. ;;;
  1096. ;;; "Show Screen"
  1097.            Lea       A_CList,a0
  1098.            Bsr       _InstallCopper
  1099. ;;;
  1100. ;;; "HardLine.."
  1101. A_First3:          Move.l    #64,d0
  1102.            Move.l    #4,d1
  1103.            Move.l    #0,d2
  1104.            Move.l    #0,d3
  1105.            Lea       A_Pal2,a0
  1106.            Lea       A_Pal1,a1
  1107.            Move.l    A_FadeBuffPtr,a2
  1108.            Bsr       _InitFade
  1109.  
  1110.            Lea       W3_Word1,a0
  1111.            Move.l    #100,d0
  1112.            Move.l    #20,d1
  1113.            Bsr       Wr1_Write
  1114.  
  1115. .fade              Btst      #2,$dff016
  1116.            Beq       W3_Break
  1117.  
  1118.            Move.l    A_FadeBuffPtr,a0
  1119.            Bsr       _DoFade
  1120.            Bsr       _Sync
  1121.            Tst.l     d0
  1122.            Beq       .fade
  1123.  
  1124.            ;-------------------------
  1125. A_Second3:
  1126.            Move.l    #64,d0
  1127.            Move.l    #4,d1
  1128.            Move.l    #0,d2
  1129.            Move.l    #0,d3
  1130.            Lea       A_Pal2,a0
  1131.            Lea       A_Pal1,a1
  1132.            Move.l    A_FadeBuffPtr,a2
  1133.            Bsr       _InitFade
  1134.  
  1135.            Move.w    #2,d0
  1136.            Bsr       P61_WaitCRow
  1137.            Tst.l     d0
  1138.            Bne       W3_Break
  1139.  
  1140.            Lea       W3_Word2,a0
  1141.            Move.l    #106,d0
  1142.            Move.l    #110,d1
  1143.            Bsr       Wr1_Write
  1144.  
  1145. .fade              Btst      #2,$dff016
  1146.            Beq       W3_Break
  1147.  
  1148.            Move.l    A_FadeBuffPtr,a0
  1149.            Bsr       _DoFade
  1150.            Bsr       _Sync
  1151.            Tst.l     d0
  1152.            Beq       .fade
  1153.  
  1154. A_Third3:          Move.l    #64,d0
  1155.            Move.l    #4,d1
  1156.            Move.l    #0,d2
  1157.            Move.l    #0,d3
  1158.            Lea       A_Pal2,a0
  1159.            Lea       A_Pal1,a1
  1160.            Move.l    A_FadeBuffPtr,a2
  1161.            Bsr       _InitFade
  1162.  
  1163.            Move.w    #4,d0
  1164.            Bsr       P61_WaitCRow
  1165.            Tst.l     d0
  1166.            Bne       W3_Break
  1167.  
  1168.            Lea       W3_Word3,a0
  1169.            Move.l    #100,d0
  1170.            Move.l    #200,d1
  1171.            Bsr       Wr1_Write
  1172.  
  1173. .fade              Btst      #2,$dff016
  1174.            Beq       W3_Break
  1175.  
  1176.            Move.l    A_FadeBuffPtr,a0
  1177.            Bsr       _DoFade
  1178.            Bsr       _Sync
  1179.            Tst.l     d0
  1180.            Beq       .fade
  1181. ;;;
  1182. ;;; "Fade Down"
  1183. A_FadeUp3:         Move.l    #64,d0
  1184.            Move.l    #128,d1
  1185.            Move.l    #0,d2
  1186.            Move.l    #0,d3
  1187.            Lea       A_Pal1,a0
  1188.            Lea       A_Pal3,a1
  1189.            Move.l    A_FadeBuffPtr,a2
  1190.            Bsr       _InitFade
  1191.  
  1192.            Move.l    #170-1,d0
  1193. .loop              Bsr       _Sync
  1194.            Dbra      d0,.loop
  1195.  
  1196. .fade              Btst      #2,$dff016
  1197.            Beq       W3_Break
  1198.  
  1199.            Move.l    A_FadeBuffPtr,a0
  1200.            Bsr       _DoFade
  1201.            Bsr       _Sync
  1202.            Tst.l     d0
  1203.            Beq       .fade
  1204. ;;;
  1205.            Moveq     #0,d0
  1206.            Rts
  1207.  
  1208. W3_Break:          Moveq     #1,d0
  1209.            Rts
  1210.  
  1211.  
  1212. ;;; "Write3 Data"
  1213. W3_Word1:          Dc.b      H,A,R,D,L,I,N,E,END
  1214. W3_Word2:          Dc.b      A,G,A,I,N,S,T,END
  1215. W3_Word3:          Dc.b      H,A,R,D,L,I,N,E,END
  1216. ;;;
  1217.  
  1218.            Section chipdata,DATA_C
  1219. ;;; "Atomic CopperList"
  1220. A_CList:           Dc.w      $008e,$2c81     ; DIWSTRT
  1221.            Dc.w      $0090,$2bc1     ; DIWSTOP
  1222.            Dc.w      $0092,$0038     ; DDFSTRT
  1223.            Dc.w      $0094,$00d0     ; DDFSTOP
  1224.            Dc.w      $0100,$6201     ; BPLCON0
  1225.            Dc.w      $0102,$0000     ; BPLCON1
  1226.            Dc.w      $0104,$0200     ; BPLCON2
  1227.            Dc.w      $0108,-8        ; BPLMOD1
  1228.            Dc.w      $010a,-8        ; BPLMOD2
  1229.            Dc.w      $01fc,$0003     ; FETCHMODE
  1230.  
  1231. A_BplPtr:          Dc.w      $00e0,$0000     ; BPL1PTH
  1232.            Dc.w      $00e2,$0000     ; BPL1PTL
  1233.            Dc.w      $00e4,$0000     ; BPL1PTL
  1234.            Dc.w      $00e6,$0000     ; BPL1PTL
  1235.            Dc.w      $00e8,$0000     ; BPL1PTL
  1236.            Dc.w      $00ea,$0000     ; BPL1PTL
  1237.            Dc.w      $00ec,$0000     ; BPL1PTL
  1238.            Dc.w      $00ee,$0000     ; BPL1PTL
  1239.            Dc.w      $00f0,$0000     ; BPL1PTL
  1240.            Dc.w      $00f2,$0000     ; BPL1PTL
  1241.            Dc.w      $00f4,$0000     ; BPL1PTL
  1242.            Dc.w      $00f6,$0000     ; BPL1PTL
  1243.  
  1244. A_SprPtr:
  1245. A_SprNum           Set       $0120
  1246.            REPT      16
  1247.            Dc.w      A_SprNum,$0000    ; SPRxPT
  1248. A_SprNum           Set       A_SprNum+2
  1249.            ENDR
  1250.  
  1251.            Dc.w      $ffff,$fffe     ; End of list
  1252. ;;;
  1253.  
  1254.